Modul 4 von 16 · 📖 7 min Lesezeit · ⏱ 30 min gesamt

FI-AE 04 UML — Klassen- und Sequenzdiagramme

Inhaltsverzeichnis (6 Abschnitte)
  1. Konzepte und Hintergrund
  2. Architektur-Diagramm
  3. Praktische Schritte
  4. Häufige Fallstricke
  5. Weiterführende Ressourcen
  6. Wissens-Check

FI-AE 04 UML — Klassen- und Sequenzdiagramme

UML (Unified Modeling Language) ist der Standard zur Modellierung von Softwaresystemen. In diesem Modul konzentrieren wir uns auf Klassen- und Sequenzdiagramme, die fundamental für die strukturierte Analyse und den Entwurf objektorientierter Systeme sind. Sie lernen, wie Sie Klassen, ihre Attribute, Methoden und Beziehungen grafisch darstellen, sowie wie Sie die zeitliche Abfolge von Objektkommunikation in Szenarien modellieren können.

Die Beherrschung dieser Diagramme ist essenziell für die klare Kommunikation von Systemarchitekturen und -abläufen zwischen Entwicklern, Analysten und Stakeholdern. Sie bilden die Grundlage für eine konsistente Implementierung und Wartung komplexer Softwaresysteme.

Konzepte und Hintergrund

Klassen
Die grundlegende Bausteine objektorientierter Modelle, die Daten (Attribute) und Funktionalität (Methoden) kapseln. Ein Klassenfeld in UML besteht typischerweise aus drei Abschnitten: Klassenname, Attribute und Methoden.
Beziehungen
Die Interaktionen zwischen Klassen, die deren Struktur und Verhalten definieren. Wichtige Beziehungstypen sind Assoziation, Aggregation, Komposition und Vererbung, die unterschiedliche Formen der Abhängigkeit und Hierarchie darstellen.
Sequenzdiagramme
Zeigen die zeitliche Abfolge von Nachrichten zwischen Objekten in einem spezifischen Szenario. Sie fokussieren auf die Interaktion über die Zeit und eignen sich besonders gut zur Darstellung von Abläufen und Workflows.
Aktivitätsdiagramme
Modellieren den Fluss von Aktivitäten und Prozessen als Flussdiagramm. Sie werden verwendet, um Geschäftsprozesse, Workflows oder Algorithmen darzustellen und zeigen Entscheidungspunkte, Parallelität und Iterationen.

Architektur-Diagramm

classDiagram
  class Kunde {
    +kundenId: int
    +name: string
    +email: string
    +bestellungAufgeben()
    +kontaktieren()
  }
  
  class Bestellung {
    +bestellId: int
    +datum: date
    +status: string
    +berechnenGesamtpreis()
    +stornieren()
  }
  
  class Produkt {
    +produktId: int
    +name: string
    +preis: decimal
    +lagerbestand: int
    +pruefenVerfuegbarkeit()
  }
  
  class Zahlung {
    +zahlungId: int
    +betrag: decimal
    +datum: date
    +zahlungsmethode: string
    +verarbeitenZahlung()
  }
  
  Kunde "1" -- "0..*" Bestellung : hat
  Bestellung "1" -- "1..*" Produkt : enthält
  Bestellung "1" -- "1" Zahlung : verursacht

Praktische Schritte

  1. Identifizieren Sie die wesentlichen K Ihres Systems und definieren Sie deren Attribute und Methoden. Beginnen Sie mit den Kernobjekten, die die Domäne Ihres Systems repräsentieren.
  2. Definieren Sie die Beziehungen zwischen den Klassen, indem Sie Assoziationen, Aggregationen, Kompositionen und Vererbungsbeziehungen grafisch darstellen. Achten Sie auf die korrekte Verwendung von Multiplicitätsangaben.
  3. Erstellen Sie ein Sequenzdiagramm für einen kritischen Anwendungsfall, um die Interaktion zwischen Objekten über die Zeit zu visualisieren. Beginnen Sie mit dem Startobjekt und zeigen Sie den Nachrichtenfluss bis zum Abschluss des Szenarios.
  4. Modellieren Sie komplexe Geschäftsprozesse mit Aktivitätsdiagrammen, um Entscheidungspunkte, Parallelität und Iterationen darzustellen. Verwenden Sie Swimlanes, um Verantwortlichkeiten für verschiedene Akteure zu verdeutlichen.
  5. Validieren Sie Ihre Modelle durch Reviews mit Stakeholdern und implementieren Sie die Klassen entsprechend dem UML-Diagramm in Ihrer Programmiersprache der Wahl.

Häufige Fallstricke

Weiterführende Ressourcen

Wissens-Check

Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.

Was ist die Hauptfunktion von Klassen in UML?
  • A) Darstellung von Datenflüssen zwischen Systemen
  • B) Kapselung von Daten und Funktionalität in objektorientierten Modellen
  • C) Modellierung von zeitlichen Abläufen und Workflows
  • D) Visualisierung von Datenbankstrukturen

Richtige Antwort: B. Klassen kapseln Daten (Attribute) und Funktionalität (Methoden), während Datenflüsse in Aktivitätsdiagrammen und zeitliche Abläufe in Sequenzdiagrammen dargestellt werden.

Welche Beziehung zwischen Klassen würde am ehesten eine "hat-ein"-Beziehung in der realen Welt darstellen?
  • A) Vererbung
  • B) Komposition
  • C) Generalisierung
  • D) Realisierung

Richtige Antwort: B. Komposition stellt eine starke "hat-ein"-Beziehung dar, bei der das existierende Teil nicht ohne das Ganze existieren kann, während Vererbung und Generalisierung "ist-ein"-Beziehungen sind.

Was ist der Hauptunterschied zwischen Sequenz- und Aktivitätsdiagrammen in UML?
  • A) Sequenzdiagramme zeigen statische Strukturen, Aktivitätsdiagramme zeigen dynamische Abläufe
  • B) Sequenzdiagramme fokussieren auf zeitliche Abfolge von Nachrichten, Aktivitätsdiagramme auf Prozessflüsse
  • C) Sequenzdiagramme werden nur für technische Systeme verwendet, Aktivitätsdiagramme für Geschäftsprozesse
  • D) Sequenzdiagramme können nur einfache Abläufe darstellen, Aktivitätsdiagramme komplexe Workflows

Richtige Antwort: B. Sequenzdiagramm konzentrieren sich auf die zeitliche Abfolge von Nachrichten zwischen Objekten, während Aktivitätsdiagramme den Fluss von Aktivitäten und Prozessen darstellen.

Welcher der folgenden Aussagen zu Klassen in UML ist korrekt?
  • A) Eine Klasse kann nur Attribute oder nur Methoden, aber nicht beides enthalten
  • B) Die Darstellung von Klassen in UML ist standardisiert und besteht aus drei Abschnitten
  • C) Klassen in UML können nur primitive Datentypen als Attribute enthalten
  • D) Die Namen von Klassen in UML müssen immer mit einem Großbuchstaben beginnen

Richtige Antwort: B. Eine standardisierte UML-Klasse besteht aus drei Abschnitten: Klassenname, Attribute und Methoden. Andere Aussagen sind nicht korrekt, da Klassen beides enthalten können, auch komplexe Datentypen, und die Benennung konventionell ist, aber nicht zwingend mit Großbuchstaben beginnen muss.